//两个数对之间的最大乘积差
/*两个数对 (a, b) 和 (c, d) 之间的 乘积差 定义为 (a * b) - (c * d) 。

例如，(5, 6) 和 (2, 7) 之间的乘积差是 (5 * 6) - (2 * 7) = 16 。
给你一个整数数组 nums ，选出四个 不同的 下标 w、x、y 和 z ，使数对 (nums[w], nums[x]) 和 (nums[y], nums[z]) 之间的 乘积差 取到 最大值 。

返回以这种方式取得的乘积差中的 最大值 。
提示：

4 <= nums.length <= 10000
1 <= nums[i] <= 10000*/
int maxProductDifference(int* nums, int numsSize) {
    int max = 0;
    int min = 0;
    int se_max = 0;
    int se_min = 0;
    for (int i = 0; i < numsSize; i++) {
        if (nums[max] < nums[i]) {
            max = i;
        }
        if (nums[min] > nums[i]) {
            min = i;
        }
    }
    if(max==0)
    {
        se_max=1;
    }
    if(min==0)
    {
        se_min=1;
    }
    for (int i = 0; i < numsSize; i++) {
        if (i != max && nums[se_max] < nums[i]) {
            se_max = i;
        }
        if (i != min && nums[se_min] > nums[i]) {
            se_min = i;
        }
    }
    return nums[max] * nums[se_max] - nums[min] * nums[se_min];
}
//以上的方法是两遍遍历

int maxProductDifference(int* nums, int numsSize) {
        // 数组中最大的两个值
        int mx1 = (nums[0]> nums[1])?nums[0]:nums[1];
        int mx2 = (nums[0]> nums[1])?nums[1]:nums[0];
        // 数组中最小的两个值
        int mn1 = (nums[0]< nums[1])?nums[0]:nums[1];
        int mn2 = (nums[0]< nums[1])?nums[1]:nums[0];
        for (int i = 2; i < numsSize; ++i){
            int tmp = nums[i];
            if (tmp > mx1){
                mx2 = mx1;
                mx1 = tmp;
            }
            else if (tmp > mx2){
                mx2 = tmp;
            }
            if (tmp < mn1){
                mn2 = mn1;
                mn1 = tmp;
            }
            else if (tmp < mn2){
                mn2 = tmp;
            }
        }
        return (mx1 * mx2) - (mn1 * mn2);
    }
    //以上方法是一遍遍历